iT邦幫忙

2023 iThome 鐵人賽

DAY 2
0

什麼是模擬器,什麼是仿真器?

在開始介紹模擬器之前,我們不免俗地先來定義一下名稱。
名不正而言不順,對於連一個變數名稱都可以想好幾分鐘的龜毛(X)有堅持的程式設計師,
我們勢必還是得好好了解一下什麼是模擬器以及什麼是仿真器。

所謂模擬器,在本系列文章中指的為Simulator,根據劍橋英語字典的定義,指的是"a piece of equipment that is designed to represent real conditions, for example in an aircraft or spacecraft"。
而仿真器,則指的是Emulator,描述是如下的 "a system that is designed to behave in the same way as a different system"

诶诶先等一下,不要看到說文解字就離開,之所以要好好把模擬器定義清楚是有原因的,
這是因為在網路上關於什麼是Simulator和什麼是Emulator其實一直有歧異,而模擬和仿真對於中文用者來說其實也是同義字,因此可能沒有辦法很直接的聯想到他背後的意義,導致使用上的誤解。
從上述的定義,我們可以簡單的這樣認為 "Simulator是要代表存在的真實物,而Emulator則是表現出與實物相同的行為結果"。

我們可以想像一個情景如下:

顏先生的故事

顏先生一個發明家,他打算發明了一個可以自動完成全天下美食的全自動調理機,不過他還在設計環節,根據他的想法,這台機器的目的是要能夠根據輸入來仿造有名的大廚 戈登·拉姆齊的料理,
而這台機器分為兩種實現方式,分別為

A. 顏先生透過上youtube看教學影片,知道要完成一個美食可能要經過,洗滌、處理、烹調、擺盤四個步驟,我在機器內部設計四個不同的模組,分別將這四個部分完成料理。
B. 顏先生去大廚開的餐廳品嘗過料理本身,他知道最終的產物是什麼,同時他剛好也是一個"黑魔法大師" (先別吐槽,我們顏先生剛好受過完整的黑魔法義務教育),因此他在機器裡面透過魔法去從無到有產生了料理。

以這兩種方式來說,對於全自動調理機的使用者而言,我們都順利拿到了戈登·拉姆齊的料理,但產生料理的過程卻有所不同。

上述的故事其實就反映出模擬器與仿真器的不同之處,模擬器的重點注重於將真實物的過程以某種方式取真,但過程會與目標物一致,而仿真器的重點則在於說產物能夠一致,外顯出來的行為要相同。

也就是說,如果今天我們的目的是希望能夠確認產物正不正確,那我們可以選用仿真器,而如果我們今天想要知道中間某個過程的改變對於結果的影響,或想要學習中間的過程,則模擬器會是一個更好的選擇,我們可以考慮謝小姐的場景

謝小姐的故事

謝小姐在網路上看到 戈登·拉姆齊大廚的料理後希望能夠透過顏先生的全自動料理機來製作,但因為他比較喜歡熟的牛排,因此在亨調階段我們希望能夠增加30%的亨調時間,同時謝小姐也想知道要怎麼樣的處理手法才能讓牛排沒有腥味。謝小姐開心的購買了顏先生的全自動調理機,但卻發現顏先生是透過黑魔法來製作料理機的,因此沒有辦法讓她進行調整及學習,這很明顯是廠商的疏失。

對於謝小姐來說,他需要的是一個好的模擬器,讓他能夠去了解過程的原理及進行調整,而不是一個直接輸出結果的仿真器。當然,聰明的大家也會想到,那洗滌的方法也可以分為機器手手洗或者是用水柱沖,處理的方式也可以分為電鋸還是模擬真實的菜刀,這些其實就是模擬器要模擬到什麼程度的考量,因此其實模擬器和仿真器沒有一個很完美的界線。就像是大家耳熟能詳的滑坡笑話一樣,一個人要少幾根頭髮能算是禿頭,少一根算嗎、少兩根算嗎,但其實很難說這個人是在某個瞬間 (例如第114514根頭髮不見之後) 才算是禿頭的,同理,我們其實很難界定要與真實物相似到多少程度才能算是模擬器。 (實際上,與模擬對象完全相同的模擬器似乎也不是一個好選擇,因為他同時會具備我們之所以選擇模擬器而不選擇模擬對象的所有缺點,例如請大廚是需要很多錢的)

因此,仿真器可能也會反映某些真實物,模擬器也會有某些抽象層,但以常見的說法而言,我們可以簡單的將模擬器代表盡可能模擬真實物的工具,而仿真器則是注重在將真實物的產物產生出來。以本系列文章來說,我們希望能夠製作一個模擬器,因此應該要去模擬真實處理器的獲取(fetch)、解碼(decode)、執行(execute)等步驟。


碎碎念 : 有點文謅謅的,但我最初聽到的時候覺得超有趣的,分享給大家,明天會開始講處理器的模擬器有哪些種類,以及各自的優缺點


上一篇
Day 1 - 從什麼是模擬器開始的起點
下一篇
Day 3 - 處理器的模擬器
系列文
從零開始的RISC-V ISA Simulator (Another Little RISC-V ISA Simulator)30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言